home *** CD-ROM | disk | FTP | other *** search
- SayMore Version 0.47
- © 1997
- By Kenton A. Groombridge
-
- Quick note:
-
- I am currenly working on changing SayMore to use ClassAct. ClassAct is by far
- a superior product compared to MUI. Also ClassAct unlike MUI, costs you, the
- user, nothing.
-
- The use of this program requires:
-
- Workbench 2.04+ narrator.device V37+ found on Workbench 2.04/2.05 and
- translator.library V43+ found on Aminet as:
-
- util/libs/translator42.lha
- util/libs/Tran43pch.lha
-
- Introduction:
-
- SayMore is a program designed to replace Say. Say was fine for Workbench
- 1.3, but the Say program included with 2.0X did not have the ability to change
- most of the options in the new narrator.device.
-
- This is a prerelease version of SayMore. It is not far from being completed,
- but I want to make this program the best I can. Please look over the interface
- and features and tell me what you like and dislike.
-
- You know I have been saying it is not far from being completed, but it is
- taking me forever to finish it. Also I am thinking of all kinds of stuff to
- add to it so this is turing into a never ending project. Hopefully someday it
- will be completed. At least I have been spending about 5 to 10 hours per week
- on it. That is a lot more hours than I use to spend on it.
-
- There are a couple programs similar to SayMore currently on Aminet. These
- programs have severe memory leaks and are not system friendly. A considerable
- amount of time and effort has gone into SayMore to ensure that it is safe. It
- is near impossible for me to test all the limits of SayMore, but all test have
- proven that it is completely 100% OS friendly and has no memory leaks. If you
- find a program on Aminet that has features that SayMore doesn't have and is not
- listed in the "To Do" list, let me know and I will work hard to implement
- those.
-
- Disclaimer:
-
- The use of this program is on your own risk. There is no liability or
- responsibility for any damage caused by the program.
-
- Copyright:
-
- SayMore is free to be spread on public-domain and shareware disks, as long as
- they are sold for a reasonable charge.
-
- Use of the program:
-
- SayMore is my gift to the Amiga community. I do not charge money for the use
- of SayMore, but I have coined the term caveatware. Caveatware means that you
- may use the program just by reading the following. You don't have to abide by
- them, just read and consider them.
-
- 1. If English is your native language, please try to speak it correctly. I
- know that my English is not always correct, but I am trying to improve it.
- Some of by pet peeves are using the word "gender" when you mean "sex." As one
- person said, gender is the attribute of a word and not a person. This all has
- to do with political correctness which I despise.
-
- 2. Write a program for the Amiga. It seems like every time I read usenet
- news, there is somebody wishing there was a program that did this or that. Do
- something about it, and write a program. I use to write programs with the
- public domain/freeware a68k and blink. Although painful, I did write some
- pretty nifty programs.
-
- 3. If you write Amiga software, and charge a fee for what you write, please
- consider discounts for other Amiga software authors. I feel that this would
- increase the amount of software for the Amiga.
-
- 4. Send a message to me letting me know that you use the program. I would
- greatly appreciate some input on what you would like to see added or changed to
- the program.
-
- 5. If you do find a bug with the program. Please let me know as soon as
- possible. This will make future versions of the program better for you and
- other users.
-
- 5. Bug Amiga International to include narrator.device and translator.library
- with future releases of Workbench.
-
- 6. More to follow.
-
- Required:
-
- As far as I know, this program requires Workbench 2.04+, but it has not been
- tested on all platforms. It was written on an Amiga 2000/Workbench 3.1 and an
- Amiga 4000/040/Workbench 3.1. Remember that it requires the new
- narrator.device included with Workbench 2.0X, and V43 of translator.library
- found on Aminet.
-
- Reporting errors:
-
- I have put in some code to help determine the cause of errors. When a
- detectable error occurs in this program, a requester will pop up with some text
- indicating the error that occurred and the approximate amount of CHIP RAM and
- FAST RAM. If either of these numbers are small, you may be running out of
- memory. Try to free some memory and try again. Read the message. If the
- message says "Can not open translator.library V43 or above," check to see that
- you have that library and it is the correct version. The only problem that
- will not display an error, is if intuition.library V37 or above could not be
- opened. This is because the requester requires intuition.library to be opened
- to operate.
-
- If you can not determine the cause of the error or the program fails without
- a detectable error, please send me the configuration of your system, other
- programs that were running at the time, and any other information you feel is
- important.
-
- Contacting the author:
-
- e-mail kgroombr@interquest.de
- Kenton.Groombridge@wpc.af.mil
-
- snail-mail Kenton Groombridge
- PSC 3 Box 1766
- APO AE 09021
- USA
-
- -OR-
-
- Kenton Groombridge
- PSC 3 Box 1766
- D:67661 Kapaun Flugplatz
- Germany
-
- I move a lot. If you can't get in touch with my by the above address, send
- a message to my permanant address:
-
- Kenton Groombridge
- 1405 North Center Avenue
- Hardin, MT 59034
- USA
-
- Acknowledgments:
-
- The first SayMore program was written using HiSoft DevPac Assembler 3.04. I
- need to upgrade to the latest version, but even if I did, I haven't had much
- time recently to use it.
-
- This version of the program is written using SAS/C 6.58. SAS/C is a great
- program, and I hope that they continue support for the Amiga. Thanks to the
- SAS/C Amiga developers for the four patches written after Commodore's death.
-
- Thanks to Gateway 2000 for saving the Amiga's future. For the folks at
- Gateway, if you are looking for a quality individual with years of experience
- in sales, programming, quality control, and the dozen other jobs I have done in
- the military, look me up. I can sell the Amiga.
-
-
- To do:
-
- 1. Refine the tool types.
- 2. File requester to speak files.
- 3. Make the command line operation compatable with Say and add extra features.
- 4. Switch characters compatable with say, so that the voice can change while
- speaking and add extra features.
- 5. Rewind, Fast Forward, Stop, and Pause buttons.
- 6. Sizeable main window.
- 7. Menu with items such as "Open", "About", "Quit, etc."
- 8. Font sensitivity.
- 9. Localization.
- 10. More face types. /* Any ideas out there? */
- 11. Refine the GUI.
- 12. Save options, with the ability to save multiple setups.
- 13. Enhance sentence parsing routines or do a plugin so users can define their
- own.
- 14. Multiple selection of icons (Enhance a bit).
- 15. Progress indicator.
- 16. Pretty icons of my own design or if you have some, I will include them and
- give you credit in my docs.
- 17. Better documentation in AmigaGuide format. I got to work on this one!
- 18. Voice database, and the ability to save multiple voices.
- 19. Multiple faces at one time.
- 20. The ability to not use translator.library and type in the translated text
- directly.
- 21. Any feasible user request.
-
- 0.10B
- Written in assembler. It was not user friendly, but it worked.
-
- 0.20
- Ported to C and made several enhancements.
-
- 0.25
- Fixed a bug in error reporting. It reported that it could not create the
- console message port when it could not open translator.library and vice-versa.
-
- Included the correct documentation.
-
- 0.30
- Fixed bug with the console_task that caused messages to get passed to the wrong
- instance of the program when two or more instances of the program were loaded.
-
- Changed translate_buffer's size to account for the largest possible translate
- string (I hope).
-
- Discovered a bug in translator.library. When it handles large strings of
- consecutive numbers, it will skip numbers every 100 numbers it processes.
- The tranlate_buffer's size accounts for the largest string possible when or if
- this bug is ever fixed.
-
- Found a bug with the creation of the console_task. If console_task tried to
- find it's parents message port before the port was added to the system list, it
- would crash with a Guru 80000008. I could not find a way to completely fix
- this bug. I did make it where the parent's message port is added to the system
- list way before the spawned task should ask for it. The only way I know to fix
- this is to have only one instance of SayMore running at a time. If at anytime
- you get this error, please let me know, and I will work harder to try to
- eliminate this bug.
-
- Added "Face" window. It is ugly, but it is a start.
-
- 0.33
- Changed code so that only one instance of SayMore can run at a time. There
- really is no reason for two instances since only one narrator.device can be
- open at any one time.
-
- Fixed "Face" window so that it works with different size borders.
-
- Eliminated the GimmeZeroZero window for face so less system resources are
- needed.
-
- Sped up Face routine significantly.
-
- Now uses EasyRequest() to print error messages. This is good news for those
- who are using monitors that don't sync down to 15KHz.
-
- "Face" window now uses a diamond mouth. Don't worry, future version will have
- user configurable mouths. This is just for testing since I am certian that the
- round mouth is functional.
-
- 0.41
- Fixed bug with the code that determined if another instance of saymore was
- running. It used to assign a name to the node of the process. The problem
- was, if the program was run from the shell, it would change the process node of
- the shell to "SayMore". If the program was exited and an attempt was made to
- run it again, it would not run because the shell still had the name "SayMore".
- It would only run again if the shell was exited. Make sense? Now it uses a
- message port to send and recieve it's messages when starting up.
-
- Added one of my "To Do" items about a requester for "CONTINUE" or "BRING TO
- FRONT". It can't bring the "SayMore Input" and "SayMore Output" windows to
- front because they are actually CON:. Depending on the difficulty and the time
- I have, I will try to change CON: to windows and attach the console.device.
- The current method is easiest since CON: already has cut/paste and history
- built in.
-
- Fixed the spelling of my name in the title bar. When I was doing a search and
- replace, I killed the two o's in Groombridge. Oh well, it didn't affect the
- running and it actually saved a couple bytes.
-
- Added a couple optimizations that save a few bytes and sped up the code a bit.
-
- SayMore is now translator.library V43+ only. I did this because it is free,
- and it overcomes the shortcommings and the bugs found in V37
- translator.library. It also has many features which make it a must have. The
- docs say that V42 has bugs, but I never came across them. Since the V43 patch
- is free, I made SayMore V43 only.
-
- Command line operation. Although not complete, you can specify a file name to
- speak. The length of the filename does have a limit, but future versions will
- overcome this. At the moment, this is under testing. To read a file back
- type: Saymore "path:file", where "path:file" is the absolute or relative path
- and file name. If it can't find the file, SayMore will appear to start up and
- then exit without a message. A future version will open a file requester when
- this happens.
-
- Added tool types. At the moment there is no way to save the current
- configuration, but this is due to change. To change their values, use the
- Icons->Information... from the Workbench menus and add/delete/edit the tools.
-
- 0.42
- Fixed some stupid bugs in the file read routines. Although the windows would
- open, no text was rendered in them. Also the windows sometimes would not close
- when the program was finished speaking the file.
-
- Fixed the "EYE" types so that they are all the same width and height no matter
- what eye type is used. The "BOX" eye used to be rendered slightly larger.
-
- Changed the tooltype values for "EYES" and "MOUTH". "SQUARE" is now "BOX", and
- "ROUND" is now "OVAL". I did this for three reasons. It saves several bytes
- in the code, it makes the program faster, and they are more accurate terms.
-
- 0.43
- Added Noses.
-
- Altered the tooltypes routines so that the values can be either upper or lower
- case. Before they were case sensitive and had to be upper case.
-
- Messed around with the face/eye/mouth routines some more and cut the code down
- by about 200 bytes and sped up the routines about 10%.
-
- Changed the internal icon to a smaller one so that the code is a lot smaller.
-
- Optimized a few pieces of code here and there.
-
- Changed the code so that that gadgets in the main window are no longer ghosted.
- Instead, it gives a busy pointer when clicking in the main window. I like it
- better this way except that if you use an interlace pointer with 3.X then you
- will get the big ugly watch pointer. I may start two versions, one for 2.X and
- one for 3.X.
-
- Now supports INPUTBUFFER and OUTPUTBUFFER tooltypes.
-
- Rewrote the spawned task routines. Now more memory efficient and faster.
-
- Fixed a bug in the if(signal_recieved & console_sigbit) It would GetMsg and
- ReplyMsg even though there may not be a message. Added if(GetMsg(..)). I am
- surprised I didn't find this one sooner.
-
- 0.44 (12 Sep 97)
- Major reconstruction of the spawned tasks that reads input from the keyboard
- and from a file. I combined the two routines into one routine since they were
- almost identicle and rewrote much of it. It is a lot smaller and faster than
- the previous version and should also fix a bug when pasting using Powersnap.
-
- Rewrote much of the tooltype reading section so that defaults are set up first
- and any user override will set those desired. This resulted in about 1KB
- smaller code.
-
- 0.45 (15 Sep 97)
- Don't ask about 0.44. It was a mess. Actually the code was clean except for
- two lines of code. The weird thing is it worked on my machine, but not on most
- others. The way I had it written would cause the machine to crash on many
- machines because of timing. I fixed those two lines, and added a couple
- optimizations.
-
- 0.47 (26 Apr 98)
- I have been using it for a while now, but never released it. I thought I would
- ship it out since I found it stable and have not shipped a newer version in a
- while now. I hope to have the next version out by June 98. Hopefully it will
- be a nice change for you all.
-
- This version added multiple selection of icons. I still need to work on it a
- bit, but I would like to have it read the tooltypes from the icons that are
- selected. Now it only uses the tooltypes from the program icon.
-
- ***** A Final Note ****
-
- Do not use 0.44! It probably will not harm your system, but it is guaranteed
- to crash at some time.
-
-
- Tool types currently supported are:
-
- String Value
- -----------------------------------------------------------------
- NOFACE Boolean: use if you do not want the face window.
- FACEX= Any positive value within the screen limits.
- FACEY= Any positive value within the screen limits.
- FACEWIDTH= Any positive value greater than 50 and within the screen limits.
- FACEHEIGHT= Any positive value greater than 75 and within the screen limits.
- NOMAIN Boolean: use if you do not want the main window.
- MAINX= Any positive value within the screen limits.
- MAINY= Any positive value within the screen limits.
- NOINPUT Boolean: use if you do not want the input window.
- INPUTX= Any positive value within the screen limits.
- INPUTY= Any positive value within the screen limits.
- INPUTWIDTH= Any positive value within the screen limits.
- INPUTHEIGHT= Any positive value within the screen limits.
- NOOUTPUT Boolean: use if you do not want the output window.
- OUTPUTX= Any positive value within the screen limits.
- OUTPUTY= Any positive value within the screen limits.
- OUTPUTWIDTH= Any positive value within the screen limits.
- OUTPUTHEIGHT=Any positive value within the screen limits.
- EYES= DIAMOND, BOX, OVAL
- NOSELEFT Boolean. Use if you want a left pointing nose. Use along with
- NOSERIGHT to make a triangle nose.
- NOSERIGHT Boolean. Use if you want a right pointing nose. Use along with
- NOSELEFT to make a triangle nose.
- MOUTH= DIAMOND, BOX, OVAL
- INPUTBUFFER= The size of the input buffer for file reading.
- OUTPUTBUFFER=The size of the output buffer for the text conversion.
-
- * NOTICE *
- Be careful with these six. If the number is too small, you will be rendering
- in the window borders and you can go outside the rastport. This can crash the
- system. Leave these out to default to a safe value.
-
- EYESPACING= Any positive value. The bigger the number the closer the spacing
- of the eyes.
- EYEWIDTH= Any positive value. The bigger the number the smaller the width.
- EYEHEIGHT= Any positive value. The bigger the number the smaller the height.
- NOSELENGTH= Any positive value. The bigger the number the smaller the nose.
- MOUTHWIDTH= Any positive value. The bigger the number the smaller the mouth.
- MOUTHHEIGHT= Any positive value. The bigger the number the smaller the mouth.
- * NOTICE *
-
- * These will be supported when the Sizeable main window is finished. *
- MAINWIDTH= Any positive value within the screen limits.
- MAINHEIGHT= Any positive value within the screen limits.
-
- Last bit of info:
-
- You all may wonder what happens to versions that are not listed above. They
- do exist, but are versions that I test and debug. They are not released to the
- general public. If you want to receive beta programs, actually they are all
- beta, send me an email or retrieve them from my web site. All I ask is that
- you test them thoroughly and send me notes letting me know the problems you
- find. For those that don't want these unreleased beta's, I have not received
- any reports of major bugs in the beta's except for version 0.44. Version 0.44
- is a different beast all together. I will try never to do that again. Anyway,
- I try to release quality software. I run SayMore every day on large text files
- while programming. Like I said before, there is no way for me to debug it
- completely. That is why I appreciate your input.
-
- Get the latest version on my web page at:
-
- http://www.interquest.de/~kgroombr/
-